package com.youlai.boot.factory.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.youlai.boot.factory.model.entity.WorkReport;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.youlai.boot.factory.model.query.WorkReportQuery;
import com.youlai.boot.factory.model.vo.EmployeePaymentStatusVO;
import com.youlai.boot.factory.model.vo.EmployeeSalaryVO;
import com.youlai.boot.factory.model.vo.WorkReportDetailVO;
import com.youlai.boot.factory.model.vo.WorkReportVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 报工单Mapper接口
 *
 * @author youlaitech
 * @since 2025-10-13 13:30
 */
@Mapper
public interface WorkReportMapper extends BaseMapper<WorkReport> {

    /**
     * 获取报工单分页数据
     *
     * @param page 分页对象
     * @param queryParams 查询参数
     * @return {@link Page<WorkReportVO>} 报工单分页列表
     */
    Page<WorkReportVO> getWorkReportPage(Page<WorkReportVO> page, WorkReportQuery queryParams);

    /**
     * 获取我的报工单分页数据——联表查询
     *
     * @param page 分页对象
     * @param queryParams 查询参数
     * @return {@link Page<WorkReportVO>} 报工单分页列表
     */
    Page<WorkReportVO> getMyWorkReportPage(Page<WorkReportVO> page, WorkReportQuery queryParams);


    /**
     * 获取报工单详情信息
     *
     * @param
     * @param queryParams 查询参数
     * @return {@link Page<WorkReportVO>} 报工单分页列表
     */
    WorkReportDetailVO getMyWorkReportDetail(WorkReportQuery queryParams);

    /**
     * 获取员工工资统计列表
     *
     * @param month 统计月份 格式：yyyy-MM
     * @return {@link List<EmployeeSalaryVO>} 员工工资统计列表
     */
    List<EmployeeSalaryVO> getEmployeeSalaryList(@Param("month") String month);

    /**
     * 获取所有员工的工资发放状态列表
     *
     * @param month 统计月份 格式：yyyy-MM
     * @return {@link List<EmployeePaymentStatusVO>} 员工工资发放状态列表
     */
    List<EmployeePaymentStatusVO> getEmployeePaymentStatusList(@Param("month") String month);

}
